package thread;

import java.util.concurrent.locks.ReentrantLock;

/**
 * @User: vitobo
 * @Date: 2024-08-08
 * @Description:  ReentrantLock类使用
 */
public class ThreadDemo30 {
    public static void main(String[] args) {

        // ReentrantLock() 构造函数,参数写成true, 是公平锁;
        ReentrantLock reentrantLock = new ReentrantLock(true);
        // 无参数版本, 能加锁就加锁, 加不上就放弃,
        // 有参数版本, 指定了超时事件, 加不上锁就等待一会, 如果等一会时间也没加上, 就放弃加锁;
        boolean result = reentrantLock.tryLock();
        try{
            if(result){
                // 需要考虑线程安全的使用

            }else {

            }

            // 代码中间 如果存在return, 或者异常, 都可能导致unlock不能顺利执行;
            // 使用finally来解决, 把unlock方法finally中
        }finally {
            if(result){
                reentrantLock.unlock();
            }
        }


    }
}
